package com.cs.beneficios.web.action;
import com.cs.beneficios.business.entity.ProgramaDAO;
import com.cs.beneficios.business.entity.SubProgramaDAO;
import com.cs.beneficios.business.model.ProgramaVO;
import com.cs.beneficios.common.ConnectionFactory;
import com.cs.beneficios.common.entity.Consultas;
import com.cs.beneficios.validator.Validaciones;
import com.cs.paoyer.administration.business.model.UserVO;
import com.cs.paoyer.administration.exception.AdministrationUserException;
import com.cs.paoyer.administration.util.AccessControl;
import com.cs.paoyer.common.exception.CommonUserException;
import com.cs.paoyer.common.exception.UserException;

import java.io.IOException;

import java.sql.SQLException;

import java.util.Collection;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;

public class ActivarSubprogramasAction extends Action 
{
  /**
   * This is the main action called from the Struts framework.
   * @param mapping The ActionMapping used to select this instance.
   * @param form The optional ActionForm bean for this request.
   * @param request The HTTP Request we are processing.
   * @param response The HTTP Response we are processing.
   * @return 
   * @throws java.io.IOException
   * @throws javax.servlet.ServletException
   */
  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
  {
     ActionMessages messages = new ActionMessages();
  
    try{
      
        AccessControl access = new AccessControl();
        access.validateAccess(mapping,request,response);
        //ConnectionFactory cf = new ConnectionFactory("beneficios","beneficios");
		ConnectionFactory cf = new ConnectionFactory();
        Validaciones validacion = new Validaciones(cf);
        Consultas consulta = new Consultas(cf);
        ProgramaVO objproVO = new ProgramaVO();
        SubProgramaDAO objsubproDAO = new SubProgramaDAO(cf);
        String strcodprog = "";
        String origen = request.getParameter("ori");
        boolean Activar = false;
        Collection subprogramas = null;
        
        Activar = validacion.validaActSub();
        
        if(origen.equals("activar")){
           strcodprog = request.getParameter("Codigo");
           objproVO.setCodePrograma(strcodprog);
        }else if(origen.equals("activar1")){
             strcodprog = request.getParameter("Codigo");
             objproVO.setCodePrograma(strcodprog);
        }
          if(!strcodprog.equalsIgnoreCase("")){  
              ProgramaDAO objproDAO = new ProgramaDAO(cf);
                           
             int modificar = objproDAO.getActivarProg(objproVO);
               if(modificar > 0){
                  try{
                   subprogramas = objsubproDAO.getActivarSub(objproVO);
                    if(subprogramas.size()>0){
                      request.setAttribute("subprogramas",subprogramas); 
                    }else{
                        request.setAttribute("msg","El programa no posee beneficios");
                    }
                  }catch(Exception e){
					System.err.println("/******** TDSUB - cwsub");
					e.printStackTrace();
					System.err.println("TDSSPE - cwsub ********/");
                  }
                   
               }else{
                  request.setAttribute("mensajes","El programa no se pudo activar");
               }
               cf.closeConnection(objproDAO.getConn());
         }else if(Activar){
              try{
               HttpSession session = request.getSession();
               UserVO user = (UserVO)session.getAttribute("userInfo");  
               subprogramas = objsubproDAO.getActivarSubprogramas2(user.getCode(),user.getUserGroupName(),user.getCodeArea());
              }catch(Exception e){
				System.err.println("/******** TDSUB - cwsub");
				e.printStackTrace();
				System.err.println("TDSSPE - cwsub ********/");
              }
              if(subprogramas != null && subprogramas.size() > 0)
              {
                request.setAttribute("subprogramas",subprogramas);  
              }else{request.setAttribute("msg","No hay beneficios inactivos para activar");}

           }else{request.setAttribute("msg","No hay beneficios inactivos para activar");}
       cf.closeConnection(objsubproDAO.getConn());       
       cf.closeConnection(consulta.getConn());  
       cf.closeConnection(validacion.getConn()); 
    }catch(SQLException e)
    {
		System.err.println("/******** TDSUB - cwsub");
		e.printStackTrace();
		System.err.println("TDSSPE - cwsub ********/");
    }catch(UserException ue){
      messages.add("msgWarn",  new ActionMessage("loginForm.message."
																			+ ue.getExceptionVO().getId()));
				saveMessages(request, messages);
      	if(ue.getExceptionVO().getId()==AdministrationUserException.ENDED_SESSION)
        {       
              response.sendRedirect(request.getContextPath()+"/index.jsp");
        }
        else if(ue.getExceptionVO().getId()==CommonUserException.NOT_ALLOWED_RESOURCE)
        {
            response.sendRedirect(request.getContextPath()+"/admin/tile/invalidatedResource.jsp");
        }
        else
        {
            return mapping.getInputForward();
        }
    }
    return mapping.findForward("success");
  }
}